Situación problema

De acuerdo a la Cámara Nacional de la Industria Farmacéutica, (CANIFARMA) en México las personas en situación de pobreza se caracterizan por tener una probabilidad 5 veces mayor de fallecer por COVID-19 que las personas con relativamente mayor nivel de ingresos (Arceo-Gómez, et al., 2021). Además de la falta de acceso a servicios de salud y posibles cormobilidades, otro factor relevante en incrementar dicha probabililidad es el perfil socioeconómico (Arceo-Gómez, et al., 2021).

A partir de la pandemia por COVI19, la firma de consultoría XYZ (México) establece que “Las organizaciones que su principal actividad de negocios es brindar servicios de salud requiren soluciones específicas e innovadoras, para aprovechar oportunidades, afrontar retos, así como favorecer su consolidación y crecimiento”. Algunos de los servicios enfocados por parte de la firma es detectar las necesidades y potencial del crecimiento del sector salud a partir de Analítica de Datos.

Descripción de la actividad

  1. ¿Qué es un ESDA y cuál es su principal propósito en el proceso de analítica de datos? Es un análisis espacial exploratorio, esta sería la traducción al español, y su propósito es entender mejor la distribución espacial de los datos, es decir como estos actuan diferente cuando tenemos en cuenta su atributo geografico.

  2. ¿Qué es autocorrelación espacial? Busca entender a nivel geografico cuando un objeto o característica es similar a su vecino o a otro objeto cercano y en que magnitud. Por ejemplo si vemos una concentración de árboles en zonas vecinas y a su vez mientras más lejos del punto de referencia nos vayamos hay menos árboles existe una autocorrelación espacial positiva.

Se empieza por importar las tablas necesarias, en este caso, una con datos de covid con información de los casos de covid y datos socioeconomicos, y por otro lado tenemos otro tabla con información de los hospitales.

Limpieza de datos

Base de datos Covid

#Confirmar el tipo de datos
typeof(covid$popden2020)
## [1] "character"
typeof(covid$crimen_2019)
## [1] "double"
typeof(covid$inclusion_fin_2019)
## [1] "double"
typeof(covid$porcentaje_pob_pobreza)
## [1] "character"
typeof(covid$porcentaje_pob_pobreza_ext)
## [1] "character"
typeof(covid$porcentaje_pob_acceso_ss)
## [1] "character"
typeof(covid$pob_6.14_no_edu)
## [1] "double"
typeof(covid$porcentaje_pob_servicios_salud)
## [1] "character"

La tabla de covid cuenta con datos como índices y como porcentajes, que naturalmente son numéricos, pero se están reconociendo como tipo carácter, por lo cual se realiza una transformación de los datos.

#Transformación de tipo de dato
covid$popden2020 = as.double(covid$popden2020)
covid$crimen_2019 = as.double(covid$crimen_2019)
covid$inclusion_fin_2019 = as.double(covid$inclusion_fin_2019)
covid$porcentaje_pob_pobreza = as.double(covid$porcentaje_pob_pobreza)
covid$porcentaje_pob_pobreza_ext = as.double(covid$porcentaje_pob_pobreza_ext)
covid$porcentaje_pob_acceso_ss = as.double(covid$porcentaje_pob_acceso_ss)
covid$porcentaje_pob_servicios_salud = as.double(covid$porcentaje_pob_servicios_salud)

Con el fin de predecir el comportamiento del covid en diferentes localidades se hace una nueva columna que sume el total de casos para los diferentes meses del año 2020. De igual forma dado que cada la cantidad de habitantes difiere según la localidad se buscará hacer una tasa por cada 10,000 con el fin de reducir el sesgo.

#Creación de una nueva columna con el total de casos de Covid del 2020 por cada 10,000 habitantes
covid$total_casos <- rowSums(covid[,c("feb_2020", "march_2020", "april_2020", "may_2020", "june_2020", "july_2020", "august_2020", "sept_2020", "oct_2020", "nov_2020", "dic_2020")], na.rm=TRUE)
covid$tasa_covid = (covid$total_casos/covid$poblacion_2022)*10000

Siendo que algunas columnas están en porcentaje, y se busca que sea representativos, para evitar confusiones y sesgos se pasaran a tipo decimal

#Transformación a porcentaje de las variables correspondientes
covid$porcentaje_pob_acceso_ss = covid$porcentaje_pob_acceso_ss / 100
covid$porcentaje_pob_pobreza = covid$porcentaje_pob_pobreza / 100
covid$porcentaje_pob_pobreza_ext = covid$porcentaje_pob_pobreza_ext /100
covid$porcentaje_pob_servicios_salud = covid$porcentaje_pob_servicios_salud / 100

Con el fin de conservar sólo variables significativas, se aplica un modelo de regresión no espacial

#Creación de modelo de regresión no espacial
model = lm(tasa_covid ~ popden2020 + crimen_2019 + inclusion_fin_2019 + porcentaje_pob_pobreza + porcentaje_pob_pobreza_ext + porcentaje_pob_acceso_ss + pob_6.14_no_edu + porcentaje_pob_servicios_salud, data = covid)
summary(model)
## 
## Call:
## lm(formula = tasa_covid ~ popden2020 + crimen_2019 + inclusion_fin_2019 + 
##     porcentaje_pob_pobreza + porcentaje_pob_pobreza_ext + porcentaje_pob_acceso_ss + 
##     pob_6.14_no_edu + porcentaje_pob_servicios_salud, data = covid)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -281.48  -23.68   -6.27   11.97  433.69 
## 
## Coefficients:
##                                  Estimate Std. Error t value Pr(>|t|)    
## (Intercept)                     1.617e+02  6.179e+00  26.164  < 2e-16 ***
## popden2020                      8.602e-03  6.209e-04  13.854  < 2e-16 ***
## crimen_2019                    -8.782e-03  3.174e-02  -0.277  0.78206    
## inclusion_fin_2019              1.519e+01  1.356e+00  11.206  < 2e-16 ***
## porcentaje_pob_pobreza         -9.996e+01  1.023e+01  -9.774  < 2e-16 ***
## porcentaje_pob_pobreza_ext      3.879e+01  1.227e+01   3.161  0.00159 ** 
## porcentaje_pob_acceso_ss       -7.969e+01  1.007e+01  -7.912 3.81e-15 ***
## pob_6.14_no_edu                -1.268e+00  3.093e-01  -4.101 4.25e-05 ***
## porcentaje_pob_servicios_salud -6.086e+00  8.128e+00  -0.749  0.45406    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 48.33 on 2446 degrees of freedom
##   (2 observations deleted due to missingness)
## Multiple R-squared:  0.4125, Adjusted R-squared:  0.4105 
## F-statistic: 214.6 on 8 and 2446 DF,  p-value: < 2.2e-16

Se crea un nuevo data set que incluye únicamente aquellas variables que se reconozcan como significativas. En su mayoría estas variables salieron significativas, por lo que lo interesante de analizar en este caso es cuales tienen mayor impacto. Cabe recalcar que los números estimados son tan bajos porque se está usando una tasa y porcentajes.

  1. popden2020: se espera que exista un aumento del 8.602e-03 en la tasa de covid por cada unidad extra en la densidad de población, estos números son pequeños por lo que se explicó anteriormente, más se puede hacer una comparación relativa al resto de variables. La población afecta de manera positiva a la tasa de covid. Siendo el covid una enfermedad contagiosa, tiene sentido que a mayor cantidad de personas existan más infectados.
  2. crime: no se considera significativa.
  3. inclusion_fin_2019: es significativa, más su magnitud de afectación es mínima comparada con el resto de variables, es positiva.
  4. porcentaje_pob_pobreza: en general es la variable con mayor afección y es negativa, siendo que localidades con mayor porcentaje de pobreza tienen menores tasas de covid, esto se podría deber a que las personas de bajo nivel socioeconómico sean más propensas a no realizarse pruebas de covid y por lo tanto no ser contabilizadas como infectados.
  5. porcentaje_pob_pobreza_ext: afecta de manera positiva la tasa de covid y. dentro de las variables significativas fue la de menor significaciancia. 6.porcentaje_pob_acceso_ss: porcentaje de la población que carece de servicios de seguridad social durante el año 2020, similar a al porcentaje de pobreza, este afecta negativamente y se puede dber igual a la falta de pruebas en esta población.
  6. pob_6.14_no_edu: esta variable afecta significativamente pero tiene muy bajo impacto.
  7. porcentaje_pob_servicios_salud: no se muestra significativa.

Se hace la creación de un nuevo data set con las variables que presentaron significancia en el modelo de regresión lineal. Esto a fin de manipular de manera más sencilla la información. De igual forma se deja la columna de clave de entidad para posteriormente hacer la conexión la base de datos de hospitales.

#Creación de nuevo dataset con variables significactivas
covid1 = covid[, c("tasa_covid", "cve_ent", "inclusion_fin_2019", "popden2020", "porcentaje_pob_pobreza_ext", "porcentaje_pob_pobreza", "porcentaje_pob_acceso_ss", "pob_6.14_no_edu")]

Base de datos Hospitales

Se hace un filtrado para eliminar los registros de aquellos centros especializados como guarderías y asilos, pues su relevancia para la estimación de casos de covid es insignificante.

#Filtrado por nombre_act para conservar solo unidades de salud
hosp1 <- hosp %>%
  filter(nombre_act != "Asilos y otras residencias del sector privado para el cuidado de ancianos",
         nombre_act != "Agrupaciones de autoayuda para alcohólicos y personas con otras adicciones",
         nombre_act != "Orfanatos y otras residencias de asistencia social del sector privado",
         nombre_act != "Orfanatos y otras residencias de asistencia social del sector público",
         nombre_act != "Refugios temporales comunitarios del sector privado",
         nombre_act != "Consultorios del sector privado de audiología y de terapia ocupacional, física y del lenguaje",
         nombre_act != "Servicios de orientación y trabajo social para la niñez y la juventud prestados por el sector público",
         nombre_act != "Servicios de orientación y trabajo social para la niñez y la juventud prestados por el sector privado",
         nombre_act != "Servicios de capacitación para el trabajo prestados por el sector privado para personas desempleadas, subempleadas o discapacitadas",
         nombre_act != "Guarderías del sector privado",
         nombre_act != "Guarderías del sector público",
         nombre_act != "Centros del sector público dedicados a la atención y cuidado diurno de ancianos y discapacitados",
         nombre_act != "Otros servicios de orientación y trabajo social prestados por el sector público",
         nombre_act != "Refugios temporales comunitarios del sector público",
         nombre_act != "Servicios de capacitación para el trabajo prestados por el sector público para personas desempleadas, subempleadas o discapacitadas",
         nombre_act != "Residencias del sector privado para el cuidado de personas con problemas de trastorno mental y adicción",
         nombre_act != "Centros del sector privado de atención médica externa para enfermos mentales y adictos",
         nombre_act != "Consultorios del sector público de audiología y de terapia ocupacional, física y del lenguaje",
         nombre_act != "Centros del sector público de atención médica externa para enfermos mentales y adictos",
         nombre_act != "Centros de planificación familiar del sector privado",
         nombre_act != "Asilos y otras residencias del sector público para el cuidado de ancianos",
         nombre_act != "Centros del sector privado dedicados a la atención y cuidado diurno de ancianos y discapacitados",
         nombre_act != "Residencias del sector público para el cuidado de personas con problemas de trastorno mental y adicción",
         nombre_act != "Centros de planificación familiar del sector público",
         nombre_act != "Consultorios de quiropráctica del sector público",
         nombre_act !=  "Consultorios de optometría")

Se hace una clave única con los datos de clave de municipio y entidad, esto para que coincida con los registros del data set de Covid, esto con el fin de luego unirlas. Aquí estamos creando una nueva variable en la base de hosp1, la cual nos dará la misma clave de entidad que la de la base de datos de covid, para esto estamos multiplicando la clave entidad por 1000 y sumamos la clave municipio, pues es la nomenclatura que tiene la base de datos de covid con la cual planeamos hacer una unión posteriormente.

#Creación de clave única
hosp1$cve_ent1 = (hosp1$cve_ent * 1000) + hosp1$cve_mun
hosp1$cve_ent1 = as.character(hosp1$cve_ent1)

Conservamos solo aquellas variables que se consideren relavantes para el análisis planteado.

#Conservamos solo las columnas necesarias
hosp1 = hosp1[,c("cve_ent1", "municipio", "entidad")]
#muestra del nuevo dataset
head(hosp1)
##   cve_ent1      municipio        entidad
## 1     1001 Aguascalientes Aguascalientes
## 2     1001 Aguascalientes Aguascalientes
## 3     1001 Aguascalientes Aguascalientes
## 4     1003       Calvillo Aguascalientes
## 5     1001 Aguascalientes Aguascalientes
## 6     1001 Aguascalientes Aguascalientes
#Filtro de agrupación para el conteo de hospitales por municipio
df = hosp1 %>%
  group_by(cve_ent1, entidad) %>%
  summarise(n = n()) %>%
  arrange(desc(n))
## `summarise()` has grouped output by 'cve_ent1'. You can override using the
## `.groups` argument.
colnames(df)[colnames(df)=="n"] = "cant_hosp"
df
## # A tibble: 2,462 × 3
## # Groups:   cve_ent1 [2,462]
##    cve_ent1 entidad                  cant_hosp
##    <chr>    <chr>                        <int>
##  1 14039    "Jalisco"                     5214
##  2 21114    "Puebla"                      4617
##  3 19039    "Nuevo Le\xf3n"               4256
##  4 2004     "Baja California"             3921
##  5 11020    "Guanajuato"                  3608
##  6 16053    "Michoac\xe1n de Ocampo"      3345
##  7 31050    "Yucat\xe1n"                  3202
##  8 22014    "Quer\xe9taro"                3160
##  9 9007     "Ciudad de M\xe9xico"         3141
## 10 9015     "Ciudad de M\xe9xico"         3052
## # ℹ 2,452 more rows

Unión de las bases de datos

Una vez limpiados ambos datasets se hace una unión de ellos para tener toda la información en una sola tabla, ahora se puede saber por municipio la cantidad de hospitales, la tasa de covid y diversos factores socioeconómicos.

#Unión de la base de datos de Covid con la base de datos con información de hospitales por municipio
df2 <- merge(covid1, df, by.x = "cve_ent", by.y = "cve_ent1", all.x = TRUE)
#División de base de datos entre las diferentes regiones
Norte = df2[df2$entidad %in% c("Baja California", "Chihuahua", "Coahuila", "Nuevo Le?n", "Sonora", "Tamaulipas"), ]
CentroNorte = df2[df2$entidad %in% c("Aguascalientes", "Baja California Sur", "Colima", "Durango", "Jalisco","Michoac?n", "Nayarit", "San Luis Potos?", "Sinaloa", "Zacatecas"), ]
Centro = df2[df2$entidad %in% c("Ciudad de M?xico", "Estado de M?xico", "Guanajuato", "Hidalgo", "Morelos", "Puebla", "Quer?taro", "Tlaxcala"), ]
Sur = df2[df2$entidad %in% c("Campeche", "Chiapas", "Guerrero", "Oaxaca", "Quintana Roo", "Tabasco", "Veracruz", "Yucat?n"), ]

ESDA

Estadístico descriptivo

Fijándonos exclusivamente en la tasa de covid por región vemos que el norte es la región con mayor tasa promedio, y el sur la que menor tiene, esto tiene sentido si tomamos en cuenta que el norte tiene los diferentes factores que ya concluimos aportan a una alta tasa, bajos niveles de pobreza, inclusión financiera y aunque tienen la menor población, mientras en el Sur tiene una población mediana, baja inclusión financiera y altos porcentaje de pobreza.

# Calcular los promedios por región
promedios_region <- data.frame(
  Region = c("Norte", "CentroNorte", "Centro", "Sur"),
  PromedioTasaCovid = c(mean(Norte$tasa_covid), mean(CentroNorte$tasa_covid), mean(Centro$tasa_covid), mean(Sur$tasa_covid)),
  PromedioPobreza = c(mean(Norte$porcentaje_pob_pobreza), mean(CentroNorte$porcentaje_pob_pobreza), mean(Centro$porcentaje_pob_pobreza, na.rm = TRUE), mean(Sur$porcentaje_pob_pobreza)),
  PromedioFinanzas = c(mean(Norte$inclusion_fin_2019), mean(CentroNorte$inclusion_fin_2019), mean(Centro$inclusion_fin_2019), mean(Sur$inclusion_fin_2019)),
  PromedioPoblacion = c(mean(Norte$popden2020), mean(CentroNorte$popden2020), mean(Centro$popden2020), mean(Sur$popden2020, na.rm = TRUE))
)

# Mostrar la tabla de promedios por región
print(promedios_region)
##        Region PromedioTasaCovid PromedioPobreza PromedioFinanzas
## 1       Norte          64.84920       0.3829473        0.6352688
## 2 CentroNorte          54.31103       0.4322990        0.7937413
## 3      Centro          46.33090       0.6561205        0.4172500
## 4         Sur          29.77827       0.7638648        0.2479452
##   PromedioPoblacion
## 1          75.03911
## 2         136.86148
## 3         321.08536
## 4         101.34162

Para propósitos de este ejercicio nos concentramos específicamente en la región norte y en estadísticos globales

#Resumen estadístico de la base de datos final
summary(df2)
##     cve_ent        tasa_covid     inclusion_fin_2019   popden2020      
##  Min.   : 1001   Min.   :  0.00   Min.   : 0.0000    Min.   :    0.16  
##  1st Qu.:14084   1st Qu.: 10.78   1st Qu.: 0.0000    1st Qu.:   17.74  
##  Median :20231   Median : 29.88   Median : 0.0000    Median :   52.34  
##  Mean   :19369   Mean   : 49.13   Mean   : 0.4876    Mean   :  312.34  
##  3rd Qu.:24030   3rd Qu.: 63.88   3rd Qu.: 0.8500    3rd Qu.:  142.69  
##  Max.   :32058   Max.   :546.74   Max.   :10.6800    Max.   :56489.74  
##                                                      NA's   :1         
##  porcentaje_pob_pobreza_ext porcentaje_pob_pobreza porcentaje_pob_acceso_ss
##  Min.   :0.0000             Min.   :0.0545         Min.   :0.2203          
##  1st Qu.:0.0535             1st Qu.:0.4557         1st Qu.:0.6433          
##  Median :0.1248             Median :0.6262         Median :0.7646          
##  Mean   :0.1720             Mean   :0.6195         Mean   :0.7238          
##  3rd Qu.:0.2415             3rd Qu.:0.8028         3rd Qu.:0.8347          
##  Max.   :0.8445             Max.   :0.9965         Max.   :0.9699          
##  NA's   :1                  NA's   :1              NA's   :1               
##  pob_6.14_no_edu    entidad            cant_hosp     
##  Min.   : 0.000   Length:2457        Min.   :   1.0  
##  1st Qu.: 4.170   Class :character   1st Qu.:   4.0  
##  Median : 5.720   Mode  :character   Median :  13.0  
##  Mean   : 6.304                      Mean   :  94.6  
##  3rd Qu.: 7.810                      3rd Qu.:  45.0  
##  Max.   :38.560                      Max.   :5214.0  
##                                      NA's   :6
summary(Norte)
##     cve_ent        tasa_covid     inclusion_fin_2019   popden2020      
##  Min.   : 2001   Min.   :  0.00   Min.   :0.0000     Min.   :   0.156  
##  1st Qu.: 8043   1st Qu.: 19.28   1st Qu.:0.0000     1st Qu.:   1.618  
##  Median :26022   Median : 46.44   Median :0.0000     Median :   3.618  
##  Mean   :19462   Mean   : 64.85   Mean   :0.6353     Mean   :  75.039  
##  3rd Qu.:26069   3rd Qu.: 88.44   3rd Qu.:1.2575     3rd Qu.:  11.323  
##  Max.   :28043   Max.   :456.92   Max.   :7.5000     Max.   :4369.486  
##  porcentaje_pob_pobreza_ext porcentaje_pob_pobreza porcentaje_pob_acceso_ss
##  Min.   :0.00000            Min.   :0.0975         Min.   :0.2219          
##  1st Qu.:0.01678            1st Qu.:0.2569         1st Qu.:0.4998          
##  Median :0.03305            Median :0.3444         Median :0.6471          
##  Mean   :0.06212            Mean   :0.3829         Mean   :0.6248          
##  3rd Qu.:0.06657            3rd Qu.:0.4975         3rd Qu.:0.7520          
##  Max.   :0.64850            Max.   :0.9221         Max.   :0.9054          
##  pob_6.14_no_edu    entidad            cant_hosp     
##  Min.   : 0.000   Length:186         Min.   :   1.0  
##  1st Qu.: 4.585   Class :character   1st Qu.:   3.0  
##  Median : 6.225   Mode  :character   Median :   8.0  
##  Mean   : 7.643                      Mean   : 142.4  
##  3rd Qu.: 9.338                      3rd Qu.:  35.0  
##  Max.   :38.560                      Max.   :3921.0
#Histogramas globales
plot_normality(df2, tasa_covid, inclusion_fin_2019, popden2020, porcentaje_pob_pobreza_ext, porcentaje_pob_pobreza, porcentaje_pob_acceso_ss, pob_6.14_no_edu, cant_hosp)

Podemos ver como para la mayoría de variables existen sesgos a la izquierda o la derecha, por lo que antes de realizar cualquier otro análisis sería bueno hacer una conversión cuadrática o logarítmica según convenga.

#Histogramas regional
plot_normality(Norte, tasa_covid, inclusion_fin_2019, popden2020, porcentaje_pob_pobreza_ext, porcentaje_pob_pobreza, porcentaje_pob_acceso_ss, pob_6.14_no_edu, cant_hosp)

En general también se muestran las variables con sesgos, la diferencia sería en la magnitud de la frecuencia. Por ejemplo vemos que en el Norte existe un mayor sesgo a la derecha en los porcentajes de pobreza lo cual tiene sentido con las explicaciones anteriores.

Estadístico de Dispersión

# boxplot global
boxplot(df2$tasa_covid)

boxplot(df2$cant_hosp)

boxplot(df2$inclusion_fin_2019)

boxplot(df2$popden2020)

boxplot(df2$porcentaje_pob_pobreza)

Representado en un boxplot se puede observar de una forma muy clara por la cantidad de outliers que los datos están muy dispersos para la tasa de covid, cantidad de hospitales, inclusión financiera y población. Mientras que el porcentaje de pobreza se muestra sin outliers. Todas estas especificaciones tienen sentido según los histogramas previamente analizados.

# boxplot local
boxplot(Norte$tasa_covid)

boxplot(Norte$cant_hosp)

boxplot(Norte$inclusion_fin_2019)

boxplot(Norte$popden2020)

boxplot(Norte$porcentaje_pob_pobreza)

Una vez filtrando por región se disminuye considerablemente la cantidad de outliers, lo que puede indicar en primera instancia que el comportamiento por región es similar entre estados.

Visualización de Mapas

Importamos un data set georeferenciado (sf) para hacer la unión por municiipo, y así crear mapas

#Carga de data set para creación de mapas - sf
mapasf = read_sf("~/Downloads/spda_covid19/shp_mx_mpios/mx_mpios.shp")
#Unión de datas geo com la base de datos principal
mapasf = geo_join(mapasf, df2, 'IDUNICO','cve_ent', how = 'inner')

Importamos un data set georeferenciado (shape poly) para hacer la unión por municiipo, y así crear mapas

#Carga de data set para creación de mapas - polygon shapefile
maparsp <-readShapePoly("~/Downloads/spda_covid19/shp_mx_mpios/mx_mpios.shp",IDvar="IDUNICO",proj4string=CRS("+proj=longlat")) 
#Unión de datas geo com la base de datos principal
maparsp = geo_join(maparsp, df2, 'IDUNICO','cve_ent', how = 'inner')
prueba = ggplot(data=mapasf) + geom_sf(aes(fill=tasa_covid)) + scale_fill_continuous(low = "#fff7ec", high="#7f0000")
prueba

#Por propositos de carga se omitirá este paso, esre mapa permite interactuar con el
# Mapa Interactivo
#mapview(mapasf, zcol="tasa_covid")

Autocorrelacion Espacial

Matrices de conectividad

#Cálculo de centroides
centroid = coordinates(maparsp)
names(centroid) = c("lon","lat")
map.centroid = coordinates(maparsp)
summary(map.centroid)
##        V1                V2       
##  Min.   :-116.89   Min.   :14.64  
##  1st Qu.:-100.75   1st Qu.:17.62  
##  Median : -98.24   Median :19.33  
##  Mean   : -98.76   Mean   :20.03  
##  3rd Qu.: -96.78   3rd Qu.:20.95  
##  Max.   : -86.90   Max.   :32.44
map.link = poly2nb(maparsp, queen=T)
map.linkW = nb2listw(map.link, style = "W")
plot(maparsp, border = "black", axes = FALSE, las=1)
plot(map.linkW,coords=map.centroid,pch=19,cex=0.1,col="red",add=T)  ### plot SWM queen standarized 
title("Spatial Connectivity Matrix - Contiguity Case (Queen)")

#Identificación de Autocorrelacion GLOBAL
moran.mc(maparsp$tasa_covid,map.linkW,nsim=9999)# Positive Spatial Autocorrelation and Statistically Significant.  
## 
##  Monte-Carlo simulation of Moran I
## 
## data:  maparsp$tasa_covid 
## weights: map.linkW  
## number of simulations + 1: 10000 
## 
## statistic = 0.54528, observed rank = 10000, p-value = 1e-04
## alternative hypothesis: greater

Podemos observar que existe una autocorrelación espacial positiva estadísticamente significativa.

mapast = st_read("~/Downloads/spda_covid19/shp_mx_mpios/mx_mpios.shp")
## Reading layer `mx_mpios' from data source 
##   `/Users/charivelferminsuero/Downloads/spda_covid19/shp_mx_mpios/mx_mpios.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 2456 features and 3 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -118.4076 ymin: 14.5321 xmax: -86.71041 ymax: 32.71865
## Geodetic CRS:  WGS 84
mapast = geo_join(mapast, df2, 'IDUNICO','cve_ent', how = 'inner')
queen_w = queen_weights(mapast)
#Identificación de Autocorrelacion LOCAL
lisa_tasacovid<-local_moran(queen_w, mapast["tasa_covid"])
moran.mc(mapast$tasa_covid,map.linkW,nsim=9999) # Positive Spatial Autocorrelation and Statistically Significant.   
## 
##  Monte-Carlo simulation of Moran I
## 
## data:  mapast$tasa_covid 
## weights: map.linkW  
## number of simulations + 1: 10000 
## 
## statistic = 0.25688, observed rank = 10000, p-value = 1e-04
## alternative hypothesis: greater

Se observa una correlación espacial positiva

Clusterización

mapast$cluster = as.factor(lisa_tasacovid$GetClusterIndicators())
levels(mapast$cluster) = lisa_tasacovid$GetLabels()
ggplot(data=mapast) + 
  geom_sf(aes(fill=cluster)) + 
  ggtitle(label="Tasa de Covid")

En el mapa podemos ver como para la tasa de covid la mayoría de los municipios no tiene significacia en los cluster. Aquellos casos que presentan relación alta y positiva es en el norte del país.

Preguntas de análisis

1. ¿Cuáles son las regiones en México que representan una oportunidad de crecimiento y/o expansión de organizaciones relacionadas con el acceso a servicios de salud?

summary(CentroNorte$cant_hosp)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.00   10.00   27.50  135.25   76.75 5214.00
summary(Centro$cant_hosp)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.00    7.00   19.00   82.89   52.25 4617.00
summary(Norte$cant_hosp)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##     1.0     3.0     8.0   142.4    35.0  3921.0
summary(Sur$cant_hosp)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    1.00    2.00    5.00   34.52   18.00 1941.00

El Sur es la región con menos cantidad de hospitales.

2. ¿Cuáles son las características socioeconómicas de la población de dichas regiones?

summary(df2)
##     cve_ent        tasa_covid     inclusion_fin_2019   popden2020      
##  Min.   : 1001   Min.   :  0.00   Min.   : 0.0000    Min.   :    0.16  
##  1st Qu.:14084   1st Qu.: 10.78   1st Qu.: 0.0000    1st Qu.:   17.74  
##  Median :20231   Median : 29.88   Median : 0.0000    Median :   52.34  
##  Mean   :19369   Mean   : 49.13   Mean   : 0.4876    Mean   :  312.34  
##  3rd Qu.:24030   3rd Qu.: 63.88   3rd Qu.: 0.8500    3rd Qu.:  142.69  
##  Max.   :32058   Max.   :546.74   Max.   :10.6800    Max.   :56489.74  
##                                                      NA's   :1         
##  porcentaje_pob_pobreza_ext porcentaje_pob_pobreza porcentaje_pob_acceso_ss
##  Min.   :0.0000             Min.   :0.0545         Min.   :0.2203          
##  1st Qu.:0.0535             1st Qu.:0.4557         1st Qu.:0.6433          
##  Median :0.1248             Median :0.6262         Median :0.7646          
##  Mean   :0.1720             Mean   :0.6195         Mean   :0.7238          
##  3rd Qu.:0.2415             3rd Qu.:0.8028         3rd Qu.:0.8347          
##  Max.   :0.8445             Max.   :0.9965         Max.   :0.9699          
##  NA's   :1                  NA's   :1              NA's   :1               
##  pob_6.14_no_edu    entidad            cant_hosp     
##  Min.   : 0.000   Length:2457        Min.   :   1.0  
##  1st Qu.: 4.170   Class :character   1st Qu.:   4.0  
##  Median : 5.720   Mode  :character   Median :  13.0  
##  Mean   : 6.304                      Mean   :  94.6  
##  3rd Qu.: 7.810                      3rd Qu.:  45.0  
##  Max.   :38.560                      Max.   :5214.0  
##                                      NA's   :6
summary(Sur)
##     cve_ent        tasa_covid      inclusion_fin_2019   popden2020      
##  Min.   : 4001   Min.   :  0.000   Min.   :0.0000     Min.   :   1.671  
##  1st Qu.:12072   1st Qu.:  2.821   1st Qu.:0.0000     1st Qu.:  17.552  
##  Median :20192   Median : 10.939   Median :0.0000     Median :  36.626  
##  Mean   :17463   Mean   : 29.778   Mean   :0.2479     Mean   : 101.342  
##  3rd Qu.:20396   3rd Qu.: 33.666   3rd Qu.:0.0000     3rd Qu.:  82.940  
##  Max.   :27017   Max.   :336.109   Max.   :6.3000     Max.   :6583.268  
##                                                       NA's   :1         
##  porcentaje_pob_pobreza_ext porcentaje_pob_pobreza porcentaje_pob_acceso_ss
##  Min.   :0.0102             Min.   :0.1686         Min.   :0.2203          
##  1st Qu.:0.1605             1st Qu.:0.6552         1st Qu.:0.7213          
##  Median :0.2482             Median :0.8024         Median :0.7982          
##  Mean   :0.2868             Mean   :0.7639         Mean   :0.7767          
##  3rd Qu.:0.4002             3rd Qu.:0.9138         3rd Qu.:0.8579          
##  Max.   :0.8445             Max.   :0.9965         Max.   :0.9699          
##                                                                            
##  pob_6.14_no_edu    entidad            cant_hosp      
##  Min.   : 0.000   Length:803         Min.   :   1.00  
##  1st Qu.: 3.560   Class :character   1st Qu.:   2.00  
##  Median : 5.440   Mode  :character   Median :   5.00  
##  Mean   : 6.265                      Mean   :  34.52  
##  3rd Qu.: 8.185                      3rd Qu.:  18.00  
##  Max.   :27.350                      Max.   :1941.00  
## 

Al hacer una comparación con los datos globales en promedio el sur tiene menor inclusión financiera, un mayor porcentje de pobreza extrema, pero presentan un mayor porcentaje de con acceso a servicios de seguridad social y menor población sin educación de los 6-14. Entonces aunque existan menos hospitales no es alarmante al tener en cuenta que es menos territorio y menos población que en otras regiones.

3.¿Porqué sí / no existen condiciones en dichas regiones para el crecimiento y/o expansión de organizaciones relacionadas con el acceso a servicios de salud? Podemos observar que en el Sur existe un buen porcentaje con acceso a servicios de seguridad social, lo que sería un buen inicio para la infraestructura necesaria para crecer. Más cabe destacar que el sur es la región que en general menos capacidad tienen sus habitantes de solicitar servicios de salud privada, por la inclusión financiera, la baja educación y los porcentajes de pobreza, por lo que es necesario apoyo públicos para que esto se vuelva accesible. De igual forma, siendo que hay tan pocos hospitales en el sur se abre la posibilidad de una alta expansión debido a la disparidad que hay de oferta y demanda.

Referencias

Arceo-Gómez, Eva O.; Campos-Vazquez, Raymundo M.; Esquivel, Gerardo; Alcaraz, Eduardo; Martinez, Luis A.; y Lopez, Norma G. (2022). The Income Gradient in COVID-19 Mortality and Hospitalisation: An Observational Study with Social Security Administrative Records in Mexico. The Lancet Regional Health – Americas, 6. Fuente: https://www.sciencedirect.com/science/article/pii/S2667193X21001113?via%3Dihub